Python如何用Docx在word文档中将一个段落分成若干段落?

您所在的位置:网站首页 python 段落分割 Python如何用Docx在word文档中将一个段落分成若干段落?

Python如何用Docx在word文档中将一个段落分成若干段落?

2024-01-20 16:26| 来源: 网络整理| 查看: 265

程序目的:使用python将一个段落按照其中的编号顺序进行分成若干段落

word格式文档形如:

1、段落1内容

2、段落1内容2

3、段落1内容

有些word看似上边内容是不同的段落,但其实是同一个段落,也就是同一个paragraph,我们的目的是要将这些按照序号标题进行拆分成不同word,这就需要这些内容属于不同的paragraph,最初是在段中各片段(run)有序列号的前方加入’\r\n‘ ,也就是回车,无法实现,因为这是软回车,没法进行实质性的分段,加入后三行内容还是一个段落。

最后换个思路,用paragraph.insertpara_before()方法。将该段text内容按照编号进行分组保存到数组中,然后用For循环以此添加paragraph,加完之后删除原段落。

这样做到的目的主要是避免对文档中的图片进行操作。毕竟docx这个库功能有限,没法对图像进行更多的处理。遇到类似的朋友可以参考该方法。

参考代码如下:

 getForatStrListByPatternList(p_text_line, orderNumPatternList)

该函数为查找p_text_line字符与pattern orderNumPatternList进行正则匹配的数组。返回一个数组

def formatDocParagraph(docfile,orderNumPatternList): # 将word文档中进行段落划分,有些文档序列编号都在一个Paragraph中,将它们分到不同的段落中 doc=Document(docfile) for idx ,para in enumerate(doc.paragraphs): p_text = para.text.strip() new_p_text = '' p_text_line='' p_text_list = p_text.split('\n') para_newList=[] if len(p_text_list) > 0: for p_text_line in p_text_list : tmplist = getForatStrListByPatternList(p_text_line, orderNumPatternList) if str(p_text_line[:1]).strip() in delCharList and len(tmplist) > 0: if len(new_p_text)>0: para_newList.append(new_p_text) new_p_text='' new_p_text=p_text_line else: new_p_text=new_p_text+'\n'+p_text_line para_newList.append(new_p_text) if len(para_newList)>1: for p_txt in para_newList: para.insert_paragraph_before(p_txt) #删除自己 clearDocParagraph(para) doc.save(docfile) del doc

遇到了这个问题,网络上查了没用找到答案,在此记录一下看,希望对您有所帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3